import {
  defineConfig,
  presetAttributify,
  presetIcons,
  presetUno,
  transformerDirectives,
  transformerVariantGroup,
} from "unocss";

export default defineConfig({
  presets: [
    presetUno(),
    presetAttributify(),
    presetIcons({
      scale: 1.2,
      warn: true,
    }),
  ],
  transformers: [transformerDirectives(), transformerVariantGroup()],
  theme: {
    colors: {
      brand: "var(--color-brand)", // 品牌色
      success: "var(--color-success)", // 成功色
      warning: "var(--color-warning)", // 警告色
      danger: "var(--color-danger)", // 危险色
      info: "var(--color-info)", // 信息色

      "brand-50": "var(--color-brand-50)", // 品牌色50
      "brand-100": "var(--color-brand-100)", // 品牌色100
      "brand-200": "var(--color-brand-200)", // 品牌色200
      "brand-300": "var(--color-brand-300)", // 品牌色300
      "brand-400": "var(--color-brand-400)", // 品牌色400
      "brand-500": "var(--color-brand-500)", // 品牌色500
      "brand-600": "var(--color-brand-600)", // 品牌色600
      "brand-700": "var(--color-brand-700)", // 品牌色700

      // 语义背景底色
      "b-base": "var(--bg-base)", // 基础底色
      "b-muted": "var(--bg-muted)", // 次级底色
      "b-soft": "var(--bg-soft)", // 柔和底色
      "b-overlay": "var(--bg-overlay)", // 遮罩
      "b-brand": "var(--bg-brand)", // 品牌色底色
      "b-success": "var(--bg-success)", // 成功色底色
      "b-warning": "var(--bg-warning)", // 警告色底色
      "b-danger": "var(--bg-danger)", // 危险色底色
      "b-info": "var(--bg-info-soft)",
      "b-brand-soft": "var(--bg-brand-soft)", // 品牌色浅色背景
      "b-success-soft": "var(--bg-success-soft)", // 成功色浅色背景
      "b-warning-soft": "var(--bg-warning-soft)", // 警告色浅色背景
      "b-danger-soft": "var(--bg-danger-soft)", // 危险色浅色背景
      "b-info-soft": "var(--bg-info-soft)", // 信息色浅色背景

      // 边框/分割线
      border: "var(--border-color)", // 基础边框
      "border-light": "var(--border-color-light)", // 浅色边框
      "border-dark": "var(--border-color-dark)", // 深色边框
      divider: "var(--divider-color)", // 分割线

      // 文字颜色（以 t-* 命名，配合 text-t-primary 等类使用）
      "t-brand": "var(--text-brand)", // 品牌色
      "t-primary": "var(--text-primary)", // 主文字
      "t-regular": "var(--text-regular)", // 常规文字
      "t-secondary": "var(--text-secondary)", // 次要文字
      "t-placeholder": "var(--text-placeholder)", // 占位/禁用
      "t-inverse": "var(--text-inverse)", // 反色文字（深底色上）
      "t-link": "var(--text-link)", // 链接文字
      "t-danger": "var(--text-danger)", // 危险文字
      "t-warning": "var(--text-warning)", // 警告文字
      "t-success": "var(--text-success)", // 成功文字
    },
    // 让数值刻度与 rem 一一对应：1 -> 1rem, 2 -> 2rem ...
    // 影响：m-/p-/w-/h-/gap-/inset-/space- 等使用 spacing 的工具类，以及 text- 的数值刻度
    spacing: (() => {
      const map: Record<string, string> = { "0": "0rem" };
      for (let i = 1; i <= 200; i++) map[String(i)] = `${i}rem`;
      return map;
    })(),
    fontSize: (() => {
      const map: Record<string, string> = { "0": "0rem" };
      for (let i = 1; i <= 200; i++) map[String(i)] = `${i}rem`;
      return map;
    })(),
  },
});
